/**
 * 会议室管理模块配置文件
 * 该文件定义了会议室管理模块的相关配置，包括模块名称、API 路径、会议室接口定义、表格列配置、检索配置和添加配置。
 * @module meetingRoomsConfig
 */

export const moduleName = '会议'
export const moduleApi = '/api/activity'

// 模块字段
// Meeting:{
// "id": "string", // 唯一标识符
// "title": "string", // 标题
// "status": "string", // 状态
// "ConferenceRoomId": "string", // 会议室ID
// "subscribers": "string", // 订阅者
// "remark": "string" // 备注}
export interface Meeting {
  id: string // 唯一标识符
  title: string // 标题
  name: string // 会议名称
  type: string // 会议类型
  status: string // 状态
  signUpType: string // 报名类型
  ConferenceRoomId: string // 会议室ID
  startTime: string // 开始时间
  endTime: string // 结束时间
  subscribers: string // 订阅者
  place: string // 会议地址
  remark: string // 备注
  conferenceRoomManagementInfo: any // 会议室信息
  isOpen?: boolean // 是否开放会议
  isCheck?: boolean // 是否需要签到
}
const mockData: Meeting[] = []

/**
 * 表格列配置
 * @param {string} label - 列的标题
 * @param {string} prop - 对应的数据字段
 * @param {string} component - 使用的组件类型 (input, select, date, imgUpload, dateRange, timeRange)
 * @param {string} minWidth - 最小宽度（可选）
 */
const tableColumns = ref<any>([
  { label: '唯一标识符', prop: 'id', component: 'input', minWidth: '100' },
  { label: '标题', prop: 'title', component: 'input', minWidth: '150' },
  {
    label: '会议类型',
    prop: 'type',
    component: 'select',
    minWidth: '100',
    options: [
      { label: '人大会议', value: '1' },
      { label: '政协会议', value: '2' },
      { label: '普通会议', value: '3' },
    ],
  },
  { label: '状态', prop: 'status', component: 'select', minWidth: '100' },
  { label: '会议室ID', prop: 'ConferenceRoomId', component: 'input', minWidth: '120' },
  { label: '订阅者', prop: 'subscribers', component: 'input', minWidth: '150' },
  { label: '备注', prop: 'remark', component: 'textarea', minWidth: '200' },
  { label: '座位图', prop: 'seatedImg', component: 'textarea', minWidth: '200' },
])
/**
 * 获取检索配置参数
 * 返回的对象包含以下属性:
 * @param {string} label - 检索项的标题
 * @param {string} prop - 对应的数据字段
 * @param {string} component - 使用的组件类型 (input, select, date, imgUpload, dateRange, timeRange)
 * @param {string} placeholder - 输入框的占位符（可选）
 */
const searchParams = () => [
  { label: '唯一标识符', prop: 'id', component: 'input', placeholder: '请输入唯一标识符' },
  { label: '标题', prop: 'title', component: 'input', placeholder: '请输入标题' },
  {
    label: '会议类型',
    prop: 'type',
    component: 'select',
    placeholder: '请选择会议类型',
    options: [
      { label: '人大会议', value: '1' },
      { label: '政协会议', value: '2' },
      { label: '普通会议', value: '3' },
    ],
  },
  { label: '状态', prop: 'status', component: 'select', placeholder: '请选择状态' },
  { label: '会议室ID', prop: 'ConferenceRoomId', component: 'input', placeholder: '请输入会议室ID' },
  { label: '订阅者', prop: 'subscribers', component: 'input', placeholder: '请输入订阅者' },
  { label: '备注', prop: 'remark', component: 'input', placeholder: '请输入备注' },
]
interface ApiResponse<T> {
  code: number
  result: T
}
/**
 * 获取添加参数
 * @param {string} label - 添加项的标题
 * @param {string} prop - 对应的数据字段
 * @param {string} required - 是否必填
 * @param {object} rule - 校验规则（可选），若不为 null，则表示该字段需要进行校验
 * @param {function} validator - 校验函数，若校验规则采用自动形式，需要通过validator传入校验函数
 * @param {number} colSpan - 列的跨度（可选）
 * @param {string} component - 使用的组件类型 ('input' | 'input-number' | 'select' | 'switch' | 'textarea' | 'date-picker' | 'time-picker' | 'time-picker' | 'img-upload')
 * @param {string} placeholder - 输入框的占位符（可选）
 * @param {boolean} disable - 是否禁用（可选）
 * @param {Array} options - 选项列表 (component 为select时必选)
 * @param {Array} optionsFun - 选项异步函数 (component 为select时必选)
 */

const addParams = ref<any>([
  { label: '会议名称', prop: 'title', required: true, component: 'input', placeholder: '请输入标题' },
  {
    label: '会议类型',
    prop: 'type',
    required: true,
    component: 'select',
    placeholder: '请选择会议类型',
    options: [
      { label: '人大会议', value: '1' },
      { label: '政协会议', value: '2' },
      { label: '普通会议', value: '3' },
    ],
  },
  { label: '开始日期', prop: 'startTime', component: 'date-picker', placeholder: '选择入住开始日期', required: true, colSpan: 12 },
  { label: '结束日期', prop: 'endTime', component: 'date-picker', placeholder: '选择入住结束日期', required: true, colSpan: 12 },
  {
    label: '会议室',
    prop: 'conferenceRoomId',
    required: true,
    component: 'select',
    placeholder: '请选择会议室',
    optionsPath: '/api/conferenceRoomManagement/all',
  },
  // { label: '申请人', prop: 'subscribers', component: 'input', disabled: true },
  { label: '主持人', prop: 'compere', component: 'input' },
  { label: '是否签到', prop: 'isCheck', component: 'switch', placeholder: '是否签到' },
  { label: '审核状态', prop: 'status', component: 'switch', placeholder: '审核状态' },
  { label: '是否启用', prop: 'isOpen', component: 'switch', placeholder: '是否启用' },
  { label: '座位图', prop: 'seatedImg', component: 'img-upload', placeholder: '座位图' },
  { label: '会议描述', prop: 'remark', required: false, component: 'textarea', placeholder: '请输入会议描述' },
])
export { addParams, mockData, searchParams, tableColumns }
